DPR soubor was: Resource a obrazek

Otázka od: Lebeda David

17. 9. 2002 11:11

> Nikdy nic neupravuj ve vygenerovanem .dpr souboru.

IMHO to nekdy jinak nejde, i kdyz v danem pripade zkusim
navrhovana reseni. Ale jak resit treba hlidani jedne instance,
rekneme pomoci FindWindow nebo mutexu, to uz je celkem jedno,
kdy chceme, aby vytvareni hlavniho formu se delo az teprve tehdy,
kdyz uz se vi, ze aplikace neni spustena jako dalsi instance?
Veskere Application.CreateForm je pak treba strcit do nejakeho ifu.

David Lebeda

Odpovedá: Ondrej Kelle

17. 9. 2002 12:34

>> Nikdy nic neupravuj ve vygenerovanem .dpr souboru.
>
> IMHO to nekdy jinak nejde, i kdyz v danem pripade zkusim
> navrhovana reseni. Ale jak resit treba hlidani jedne instance,
> rekneme pomoci FindWindow nebo mutexu, to uz je celkem jedno,
> kdy chceme, aby vytvareni hlavniho formu se delo az teprve tehdy,
> kdyz uz se vi, ze aplikace neni spustena jako dalsi instance?
> Veskere Application.CreateForm je pak treba strcit do nejakeho ifu.

a nie je s tym ziadny problem:

program adbd;

uses
  Forms,
  JclAppInst,
  MainForm in 'MainForm.pas' {FormMain},
  AboutForm in 'AboutForm.pas' {FormAbout},
  ChildForm in 'ChildForm.pas' {FormChild},
  ADBData in 'ADBData.pas',
  OptionsForm in 'OptionsForm.pas' {FormOptions},
  ADBDConst in 'ADBDConst.pas',
  SQLForm in 'SQLForm.pas' {FormSQL};

{$R *.res}

begin
  with JclAppInstances('{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}') do // tam
mam nejaky GUID
    if CheckInstance(1) then
    begin
      Application.Initialize;
      Application.Title := 'ADB Desktop';
      Application.CreateForm(TFormMain, FormMain);
      Application.Run;
    end
    else
    begin
      SwitchTo(0);
      SendCmdLineParams('TFormMain', 0);
    end;
end.

Pravdupovediac, editovanie .dpr suborov je vo firme, kde robim, vcelku bezna
vec. <g>

HTH
TOndrej

Odpovedá: Petr Vones

17. 9. 2002 17:36

From: "Ondrej Kelle" <O.Kelle@digitalpublishing.de>
> Pravdupovediac, editovanie .dpr suborov je vo firme, kde robim, vcelku bezna
> vec. <g>

Jasne, pokud presne vis co delas a jsi schopen odhadnout / resit dusledky.
Bohuzel to obcas dopada tak, ze se pak nekdo divi 'Proc mi to nefunguje !?'.
Takze zasada je nic neupravovat a pokud uz ano, tak pouze na vlastni riziko a
s tim ze to muze mit nepredvidatelne vedlejsi efekty.

Petr Vones

Odpovedá: Jan Sebelík

18. 9. 2002 7:50

> From: "Ondrej Kelle" <O.Kelle@digitalpublishing.de>
> > Pravdupovediac, editovanie .dpr suborov je vo firme, kde robim, vcelku
bezna
> > vec. <g>

> Odesílatel: Petr Vones <pvones@mbox.vol.cz>
> Jasne, pokud presne vis co delas a jsi schopen odhadnout / resit dusledky.
> Bohuzel to obcas dopada tak, ze se pak nekdo divi 'Proc mi to nefunguje !?'.
> Takze zasada je nic neupravovat a pokud uz ano, tak pouze na vlastni riziko a
> s tim ze to muze mit nepredvidatelne vedlejsi efekty.

Jasne Petre, v zasade s tebou souhlasim, ale striktni "nic neupravovat" asi
nelze.
Alespon zakladni strukture generovaneho dpr by mel kazdy rozumet a vedet, co si
muze dovolit.

Napr. vyhodit radek Application.CreateForm...
misto toho, abych lezl do Project/Options a v nejakem dialogu prehazoval
formulare.

Anebo ukoncit program, pokud se mi po "AutoCreate" nepripoji datovy modul k
databazi.
Anebo zobrazit Login formular pred vytvorenim hlavniho formulare.
atd.

Pravda ovsem je, ze jsem taky videl .dpr, ktery mel asi 2000 radku "normalniho"
kodu.
To bylo sileny se tim probrat...  

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================